/*
** LuaFileSystem
** Copyright Kepler Project 2003 - 2017 (http://keplerproject.github.io/luafilesystem)
*/

#include <Eigen/Eigen>
#include <Eigen/Eigenvalues>
#include <log/log.h>
#include <Spectra/SymEigsSolver.h>

template<class T,class T2>
int solve_deig_spectra(Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& A,
				 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& B,
				 Eigen::Matrix<T2, Eigen::Dynamic, 1>& lambda,
				 Eigen::Matrix<T2, Eigen::Dynamic,  Eigen::Dynamic>& V,
				 int nbrEigenvalues)
{
	using namespace Spectra;
	// Construct matrix operation object using the wrapper class DenseSymMatProd
	DenseSymMatProd<double> op(A);

	// Construct eigen solver object, requesting the largest three eigenvalues
	SymEigsSolver<DenseSymMatProd<double>> eigs(op, 3, 6);

	// Initialize and compute
	eigs.init();
	int nconv = eigs.compute(SortRule::LargestAlge);

	return 0;
}
